<template>
  <client-only>
    <div id="aCoursesList" class="bg-fa of">
      <!-- /课程详情 开始 -->
      <section class="container">
        <section class="path-wrap txtOf hLh30">
          <a href="/" title class="c-999 fsize14">首页</a>
          \
          <a href="/course" title class="c-999 fsize14">课程列表</a>
          \
          <span class="c-333 fsize14">{{ courseList.title }}</span>
        </section>
        <div>
          <article class="c-v-pic-wrap" style="height: 357px">
            <section class="p-h-video-box" id="videoPlay">
              <img
                :src="courseList.cover"
                :alt="courseList.title"
                class="dis c-v-pic"
              />
            </section>
          </article>
          <aside class="c-attr-wrap">
            <section class="ml20 mr15">
              <h2 class="hLh30 txtOf mt15">
                <span class="c-fff fsize24">{{ courseList.title }}</span>
              </h2>
              <section class="c-attr-jg">
                <span class="c-fff">价格：</span>
                <b class="c-yellow" style="font-size: 24px"
                  >￥{{ courseList.price }}</b
                >
              </section>
              <section class="c-attr-mt c-attr-undis">
                <span class="c-fff fsize14"
                  >主讲： {{ courseList.teacherName }}&nbsp;&nbsp;&nbsp;</span
                >
              </section>
              <section class="c-attr-mt of">
                <span class="ml10 vam">
                  <em class="icon18 scIcon"></em>
                  <a class="c-fff vam" title="收藏" href="#">收藏</a>
                </span>
              </section>
              <section class="c-attr-mt">
                <a
                  v-if="isBought || courseList.price === 0"
                  href="#"
                  title="立即观看"
                  class="comm-btn c-btn-3"
                  >立即观看</a
                >
                <a
                  v-else
                  href="#"
                  @click="buyCourse"
                  title="立即购买"
                  class="comm-btn c-btn-3"
                  >立即购买</a
                >
              </section>
            </section>
          </aside>
          <aside class="thr-attr-box">
            <ol class="thr-attr-ol clearfix">
              <li>
                <p>&nbsp;</p>
                <aside>
                  <span class="c-fff f-fM">购买数</span>
                  <br />
                  <h6 class="c-fff f-fM mt10">{{ courseList.lessonNum }}</h6>
                </aside>
              </li>
              <li>
                <p>&nbsp;</p>
                <aside>
                  <span class="c-fff f-fM">课时数</span>
                  <br />
                  <h6 class="c-fff f-fM mt10">{{ courseList.buyCount }}</h6>
                </aside>
              </li>
              <li>
                <p>&nbsp;</p>
                <aside>
                  <span class="c-fff f-fM">浏览数</span>
                  <br />
                  <h6 class="c-fff f-fM mt10">{{ courseList.viewCount }}</h6>
                </aside>
              </li>
            </ol>
          </aside>
          <div class="clear"></div>
        </div>
        <!-- /课程封面介绍 -->
        <div class="mt20 c-infor-box">
          <article class="fl col-7">
            <section class="mr30">
              <div class="i-box">
                <div>
                  <section
                    id="c-i-tabTitle"
                    class="c-infor-tabTitle c-tab-title"
                  >
                    <a name="c-i" class="current" title="课程详情">课程详情</a>
                  </section>
                </div>
                <article class="ml10 mr10 pt20">
                  <div>
                    <h6 class="c-i-content c-infor-title">
                      <span>课程介绍</span>
                    </h6>
                    <div class="course-txt-body-wrap">
                      <section class="course-txt-body">
                        <p v-html="courseList.description"></p>
                      </section>
                    </div>
                  </div>
                  <!-- /课程介绍 -->
                  <div class="mt50">
                    <h6 class="c-g-content c-infor-title">
                      <span>课程大纲</span>
                    </h6>
                    <section class="mt20">
                      <div class="lh-menu-wrap">
                        <menu id="lh-menu" class="lh-menu mt10 mr10">
                          <ul>
                            <!-- 文件目录 -->
                            <li
                              class="lh-menu-stair"
                              v-for="course in chapterList"
                              :key="course.id"
                            >
                              <a
                                href="javascript: void(0)"
                                :title="course.title"
                                class="current-1"
                              >
                                <em class="lh-menu-i-1 icon18 mr10"></em
                                >{{ course.title }}
                              </a>
                              <!-- 如果此课程是免费课程，那么不管登没登录都可以免费试看
                              如果是收费课程，则需要购买才能观看
                              -->
                              <ol class="lh-menu-ol" style="display: block">
                                <li
                                  class="lh-menu-second ml30"
                                  v-for="courseChildren in course.children"
                                  :key="courseChildren.id"
                                >
                                  <a
                                    :href="`/play/${courseChildren.videoSourceId}`"
                                    title
                                    v-if="
                                      !isBought && courseChildren.isFree === 1
                                    "
                                  >
                                    <span class="fr">
                                      <i class="free-icon vam mr10">免费试听</i>
                                    </span>
                                    <em class="lh-menu-i-2 icon16 mr5"
                                      >&nbsp;</em
                                    >{{ courseChildren.title }}
                                  </a>
                                  <a
                                    :href="`/play/${courseChildren.videoSourceId}`"
                                    title
                                    v-else-if="isBought"
                                  >
                                    <em class="lh-menu-i-2 icon16 mr5"
                                      >&nbsp;</em
                                    >{{ courseChildren.title }}
                                  </a>
                                  <a href="javascript:;" title v-else>
                                    <em class="lh-menu-i-2 icon16 mr5"
                                      >&nbsp;</em
                                    >{{ courseChildren.title }}
                                  </a>
                                </li>
                              </ol>
                            </li>
                          </ul>
                        </menu>
                      </div>
                    </section>
                  </div>
                  <!-- /课程大纲 -->
                </article>
              </div>
            </section>
          </article>
          <aside class="fl col-3">
            <div class="i-box">
              <div>
                <section class="c-infor-tabTitle c-tab-title">
                  <a title href="/teacher">主讲讲师</a>
                </section>
                <section class="stud-act-list">
                  <ul style="height: auto">
                    <li>
                      <div class="u-face">
                        <a :href="'/teacher/' + courseList.teacherId">
                          <img
                            :src="courseList.teacherAvatar"
                            width="50"
                            height="50"
                            :alt="courseList.teacherName"
                          />
                        </a>
                      </div>
                      <section class="hLh30 txtOf">
                        <a
                          class="c-333 fsize16 fl"
                          :href="'/teacher/' + courseList.teacherId"
                          >{{ courseList.teacherName }}</a
                        >
                      </section>
                      <section class="hLh20 txtOf">
                        <span class="c-999">{{
                          courseList.teacherCareer
                        }}</span>
                      </section>
                    </li>
                  </ul>
                </section>
              </div>
            </div>
          </aside>
          <div class="clear"></div>
        </div>
        <!-- 课程评论 -->
        <div class="mt50 commentHtml">
          <div>
            <h6 class="c-c-content c-infor-title" id="i-art-comment">
              <span class="commentTitle">课程评论</span>
            </h6>
            <section class="lh-bj-list pr mt20 replyhtml">
              <ul>
                <li class="unBr">
                  <aside class="noter-pic">
                    <img
                      width="50"
                      height="50"
                      class="picImg"
                      src="~/assets/img/loading.gif"
                    />
                  </aside>
                  <div class="of">
                    <section class="n-reply-wrap">
                      <fieldset>
                        <textarea
                          name=""
                          v-model="comment.content"
                          placeholder="输入您要评论的文字"
                          id="commentContent"
                        ></textarea>
                      </fieldset>
                      <p class="of mt5 tar pl10 pr10">
                        <span class="fl"
                          ><tt
                            class="c-red commentContentmeg"
                            style="display: none"
                          ></tt
                        ></span>
                        <input
                          type="button"
                          value="评论"
                          class="lh-reply-btn"
                          @click="submitComment"
                        />
                      </p>
                    </section>
                  </div>
                </li>
              </ul>
            </section>
            <section class="">
              <section class="question-list lh-bj-list pr">
                <ul class="pr10">
                  <li v-for="comment in data.items" :key="comment.id">
                    <aside class="noter-pic">
                      <img
                        width="50"
                        height="50"
                        class="picImg"
                        :src="comment.avatar"
                      />
                    </aside>
                    <div class="of">
                      <span class="fl">
                        <font class="fsize12 c-blue">
                          {{ comment.nickname }}</font
                        >
                        <font class="fsize12 c-999 ml5">评论：</font>
                      </span>
                    </div>
                    <div class="noter-txt mt5">
                      <p>{{ comment.content }}</p>
                    </div>

                    <div class="of mt5">
                      <span class="fr"
                        ><font class="fsize12 c-999 ml5">{{
                          comment.gmtCreate
                        }}</font></span
                      >
                    </div>
                  </li>
                </ul>
              </section>
            </section>
            <div>
              <div class="paging">
                <!-- undisable这个class是否存在，取决于数据属性hasPrevious -->
                <a
                  href="javascript:void(0);"
                  :class="{ undisable: !data.hasPrevPages }"
                  title="首页"
                  @click="gotoPage(1)"
                  >首页</a
                >
                <a
                  href="javascript:;"
                  :class="{ undisable: !data.hasPrevPages }"
                  title="前一页"
                  @click="gotoPage(data.pageIndex - 1)"
                  >&lt;</a
                >
                <a
                  href="javascript:;"
                  :title="`第${page}页`"
                  v-for="page in data.totalPages"
                  :key="page.id"
                  :class="{
                    current: data.pageIndex === page,
                    undisable: data.pageIndex === page,
                  }"
                  @click="gotoPage(page)"
                  >{{ page }}</a
                >
                <a
                  href="javascript:;"
                  title="后一页"
                  :class="{ undisable: !data.hasNextPages }"
                  @click="gotoPage(data.pageIndex + 1)"
                  >&gt;</a
                >
                <a
                  href="javascript:;"
                  title="末页"
                  :class="{ undisable: !data.hasNextPages }"
                  @click="gotoPage(data.totalPages)"
                  >尾页</a
                >
                <div class="clear"></div>
              </div>
            </div>
          </div>
        </div>
      </section>
      <!-- /课程详情 结束 -->
    </div>
  </client-only>
</template>
  
  <script>
import courseApi from "/api/course";
import orderApi from "/api/order";
import commentApi from "/api/comment";
import cookie from "js-cookie";
export default {
  asyncData({ params, error }) {
    // 获取当前讲师id，根据id调用api获取讲师详情和主讲课程
    return courseApi.getCourseDetail(params.id).then((res) => {
      return {
        courseList: res.data.courseDto, //课程详情
        chapterList: res.data.chapterTreeList, // 课程章节
      };
    });
  },
  data() {
    return {
      isBought: false, // 表示是否购买该课程
      page: 1, //当前页
      limit: 4, //每页数据条数
      data: {}, // 课程评论分页数据
      comment: {
        // 评论数据
        courseId: "", //  课程id
        teacherId: "", // 讲师id
        content: "", // 评论内容
      },
    };
  },
  methods: {
    buyCourse() {
      const token = cookie.get("member_token");
      if (token) {
        // 跳转至订单页面
        this.$router.push(`/order/${this.courseList.id}`);
      } else {
        this.$alert("如果想要购买该课程，请先登录", "温馨提示", {
          confirmButtonText: "确定",
          callback: (action) => {
            if (action === "confirm") {
              // 去登录
              this.$router.push("/login");
            }
          },
        });
      }
    },
    // 初始化评论列表
    initCommentList() {
      commentApi
        .getPagedList(this.page, this.limit, this.courseList.id)
        .then((res) => {
          this.data = res.data;
        });
    },
    //   页码跳转
    gotoPage(page = 1) {
      // 给页码进行判断
      if (page <= 0) {
        // 如果页码为0时，page=1或直接return停止请求
        // page=1
        return;
      }
      if (page > this.data.totalPages) {
        return;
      }
      commentApi
        .getPagedList(page, this.limit, this.courseList.id)
        .then((res) => {
          this.data = res.data;
        });
    },
    // 添加评论前的判断
    submitComment() {
      const token = cookie.get("member_token");
      if (token) {
        // 已登录
        // 进行添加评论操作
        this.addComment();
      } else {
        // 未登录
        // 提示信息
        this.$message({
          type: "error",
          message: "请先登录再进行下一步操作!",
        });
        // 跳转至登录页面
        this.$router.push("/login");
      }
    },
    // 添加评论
    addComment() {
      //  判断输入内容是否为空
      if (this.comment.content.length === 0) {
        // 提示信息
        this.$message({
          type: "warning",
          message: "请输入您想评论的内容!",
        });
        return;
      }
      this.comment.courseId = this.courseList.id;
      this.comment.teacherId = this.courseList.teacherId;
      // 调用添加评论api
      commentApi.addComment(this.comment).then((res) => {
        // 提示信息
        this.$message({
          type: "success",
          message: "评论成功!",
        });
        // 重新加载评论数据
        this.initCommentList();

        // 评论成功后将文本域清空
        this.comment.content = "";
      });
    },
  },
  created() {
    // 通过cookie中的token判断用户是否登录
    const token = cookie.get("member_token");
    if (token) {
      // 调用api获取用户购买课程状态
      orderApi.isBought(this.$route.params.id).then((res) => {
        this.isBought = res.data;
      });
    }
    this.initCommentList();
  },
};
</script>
  